/************************************************************************

								Heroes IV
					  Copyright 2000, The 3DO Company

	------------------------------------------------------------------
  						       hero_class_properties.h

	$Header: /game/hero_class_properties.h $

	$NoKeywords: $

 ************************************************************************/

#ifndef HERO_CLASS_PROPERTIES_H_INCLUDED
#define HERO_CLASS_PROPERTIES_H_INCLUDED

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <vector>
#include "hero_class.h"
#include "skill.h"

enum t_hero_class;
enum t_town_type;

enum t_hero_combat_model_type
{
	k_model_fighter,
	k_model_archer,
	k_model_spellcaster,

	k_hero_combat_model_count
};


void get_hero_hiring_cost( t_town_type alignment, int cost[k_hero_class_basic_count] );

// this function should only be used for basic classes
t_town_type                 get_alignment( t_hero_class hero_class );
std::vector<t_skill> const& get_starting_skills( t_hero_class hero_class );
int							compute_default_experience_level(
								t_hero_class					start_class,
								std::vector< t_skill > const &	skills );

// this function can be used for any class
t_hero_class get_best_class( std::vector<t_skill> const& skills );
std::string  get_keyword( t_hero_class hero_class );
std::string  get_class_description( t_hero_class hero_class );
std::string  get_class_name( t_hero_class hero_class );
int          get_class_weight( t_hero_class hero_class, std::vector<t_skill> const& skills );
std::string  get_combat_type_keyword( t_town_type alignment, t_hero_combat_model_type type,
									  bool is_male );
t_hero_class get_hero_class( std::string const& keyword );
int          get_skill_weight( t_hero_class hero_class, t_skill_type skill );
std::string  get_type_keyword( t_town_type alignment, bool is_male, bool spellcaster );
bool         is_spellcaster( t_hero_class hero_class );


#endif // HERO_CLASS_PROPERTIES_H_INCLUDED